package websocket

import (
	"github.com/gorilla/websocket"
	"sync"
	"time"
)

type Connect struct {
	Conn         *websocket.Conn
	Send         chan *Message
	Stop         chan struct{}
	BusinessChan chan *Message
	once         *sync.Once
	mu           *sync.RWMutex
	isClosed     bool
}

type Message struct {
	WebSocketType int              `json:"webSocketType"`      // websocket消息类型类型
	MessageType   MessageTypeEnumn `json:"type"`               // 应用消息类型, 当使用应用层消息类型时, WebSocketType应该为1(TextMessage), 内容为MessageType枚举
	Data          []byte           `json:"data"`               // 需进行序列化
	Time          time.Time        `json:"time"`               // 消息时间
	MsgID         int64            `json:"msgID"`              // 消息ID, 用于匹配响应-请求
	Target        int64            `json:"targetID,omitempty"` // 目标信息
}

// Data webRTC信令数据
type Data struct {
	MsgID         string `json:"msg_id"`           // 消息的唯一标识符
	Type          string `json:"type"`             // 应用层消息类型
	Sdp           string `json:"sdp"`              // 会话描述协议数据
	Candidate     string `json:"candidate"`        //	ICE 候选地址
	SdpMid        string `json:"sdp_mid"`          //	媒体流标识
	SdpMLineIndex int    `json:"sdp_m_line_index"` // SDP 中媒体描述的索引号
	Version       string `json:"version"`          // 协议版本号
}
